﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using BiblioWebProyecto2013.Models;


namespace BiblioWeb.DataAccess
{
    public class RegistroSocioRepo
    {
        private ContextoBiblio db;

        public RegistroSocioRepo(ContextoBiblio db)
        {
            this.db = db;


        }

        public void AgregarUsuarioPorDafault(String userName)
        {
            RegistroSocio r = new RegistroSocio();
            r.Estado = "habilitado";
            r.PrestamosActivos = 0;
            r.ReservasActivas = 0;
            r.UserName = userName;
            this.Agregar(r);
        
        }

        public IList<RegistroSocio> Todos()
        {
            return this.db.RegistroSocios.ToList();
        }

        public RegistroSocio Obtener(int id)
        {
            return this.db.RegistroSocios.Find(id);
        }

        public void Agregar(RegistroSocio usuarioSocio)
        {
            this.db.RegistroSocios.Add(usuarioSocio);
            this.db.SaveChanges();
        }

        public void Modificar(RegistroSocio usuarioSocio)
        {
            this.db.Entry(usuarioSocio).State = EntityState.Modified;
            this.db.SaveChanges();
        }

        public void Eliminar(int id)
        {
            this.db.RegistroSocios.Remove(Obtener(id));
            this.db.SaveChanges();
        }

        public int CantidadReservasActivas(String userName)
        {
            return this.db.RegistroSocios.Find(userName).ReservasActivas;
        }

        public int AumetarCantidadReserva(String userName)
        {
            RegistroSocio registroSocioActual = this.db.RegistroSocios.Find(userName);
            int cantidadReservas = registroSocioActual.ReservasActivas++;
            this.Modificar(registroSocioActual);
            return cantidadReservas;
        
        }





        public int DisminuirCantidadReserva(string userName)
        {
            RegistroSocio registroSocioActual = this.db.RegistroSocios.Find(userName);
            int cantidadReservas = registroSocioActual.ReservasActivas--;
            this.Modificar(registroSocioActual);
            return cantidadReservas;
        }

        public bool EstaHabilitado(string userName)
        {
            return this.db.RegistroSocios.Find(userName).Estado.Equals("habilitado");
        }

        public int CantidadPrestamosActivas(string userName)
        {
            return this.db.RegistroSocios.Find(userName).PrestamosActivos;
        }

        public int AumetarCantidadPrestamo(string userName)
        {
            RegistroSocio registroSocioActual = this.db.RegistroSocios.Find(userName);
            int cantidadPrestamo = registroSocioActual.PrestamosActivos++;
            this.Modificar(registroSocioActual);
            return cantidadPrestamo;
        }

        internal int DisminuirCantidadPrestamo(string userName)
        {
            RegistroSocio registroSocioActual = this.db.RegistroSocios.Find(userName);
            int cantidadPrestamo = registroSocioActual.PrestamosActivos--;
            this.Modificar(registroSocioActual);
            return cantidadPrestamo;
        }

        public void Suspender(string userName)
        {
            RegistroSocio registroSocioActual = this.db.RegistroSocios.Find(userName);
            registroSocioActual.Estado="suspendido";
            this.Agregar(registroSocioActual);
        }

        public void Habilitar(string userName)
        {
            RegistroSocio registroSocioActual = this.db.RegistroSocios.Find(userName);
            registroSocioActual.Estado = "habilitar";
            this.Agregar(registroSocioActual);
        }
    }
}